package com.pkk.penguin.frame.know.java.interview.year2021.atguigu_20210226.thread;

import java.util.HashMap;
import lombok.SneakyThrows;

/**
 * 用sync实现生产者和消费者模式
 *
 * @author peikunkun
 * @version V1.0
 * @date 2021-03-16 18:00
 **/
public class ProductConsumerSynchronizedTest {


  /**
   * synchronized的共享数据
   *
   * @author peikunkun<br>
   * @version V1.0<br>
   * @date 2021/3/16 0016 下午 6:03<br>
   * @since <><br>
   */
  class SynchronizedShare {

    private int num = 0;


    /**
     * 增量
     *
     * @return void
     * @Param
     * @author peikunkun
     * @date 2021/3/16 0016 下午 6:05
     * @since
     */
    @SneakyThrows
    public synchronized void increment() {
      while (num != 0) {
        //如果不是0则进行堵塞，不在进行自增【注意,这里必须使用while判断,因为如果使用if,这里被阻塞等待之后,
        // 其他线程执行num增加操作之后,理论上这时候不符合条件了(主要就是判断和等待中间被其他线程打断)】
        this.wait();
      }
      num++;
    }


  }


  public static void main(String[] args) {

    final HashMap<Object, Object> map = new HashMap<>(1);
    map.put("1", "1");
    map.put("2", "1");
    map.put("3", "1");
    map.put("4", "1");
    map.put("5", "1");
    map.put("6", "1");


  }
}
